static const char* fill_frag_shader_11 =
      "#ifdef GL_ES\n"
      "#if defined(GL_FRAGMENT_PRECISION_HIGH) || defined(NVGP_GL3)\n"
      " precision highp float;\n"
      "#else\n"
      " precision mediump float;\n"
      "#endif\n"
      "#endif\n"
      "#ifdef NVGP_GL3\n"
      "#ifdef USE_UNIFORMBUFFER\n"
      " layout(std140) uniform frag {\n"
      "   mat3 scissorMat;\n"
      "   mat3 paintMat;\n"
      "   vec4 innerCol;\n"
      "   vec4 draw_image_rect;\n"
      "   vec2 scissorExt;\n"
      "   vec2 scissorScale;\n"
      "   vec2 extent;\n"
      "   float radius;\n"
      "   float feather;\n"
      "   float strokeMult;\n"
      "   float strokeThr;\n"
      "   vec2 draw_info;\n"
      " };\n"
      "#else\n"  // NVGP_GL3 && !USE_UNIFORMBUFFER
      " uniform vec4 frag[UNIFORMARRAY_SIZE];\n"
      "#endif\n"
      " uniform sampler2D tex;\n"
      " in vec2 ftcoord;\n"
      " in vec2 fpos;\n"
      " out vec4 outColor;\n"
      "#else\n"  // !NVGP_GL3
      " uniform vec4 frag[UNIFORMARRAY_SIZE];\n"
      " uniform sampler2D tex;\n"
      " varying vec2 ftcoord;\n"
      " varying vec2 fpos;\n"
      "#endif\n"
      "#ifndef USE_UNIFORMBUFFER\n"
      " #define scissorMat mat3(frag[0].xyz, frag[1].xyz, frag[2].xyz)\n"
      " #define paintMat mat3(frag[3].xyz, frag[4].xyz, frag[5].xyz)\n"
      " #define innerCol frag[6]\n"
      " #define draw_image_rect frag[7]\n"
      " #define scissorExt frag[8].xy\n"
      " #define scissorScale frag[8].zw\n"
      " #define extent frag[9].xy\n"
      " #define radius frag[9].z\n"
      " #define feather frag[9].w\n"
      " #define strokeMult frag[10].x\n"
      " #define strokeThr frag[10].y\n"
      " #define draw_info frag[10].zw\n"
      "#endif\n"
      "\n"
      "// fill_frag_shader_11 \n"
      "void main(void) {\n"
      " vec4 result;\n"
      " vec2 pt = ((paintMat * vec3(fpos,1.0)).xy - draw_image_rect.xy) * draw_info;\n"
      " pt = (mod(pt, draw_image_rect.zw) + draw_image_rect.xy) / extent; \n"
      "#ifdef NVGP_GL3\n"
      " vec4 color = texture(tex, pt);\n"
      "#else\n"
      " vec4 color = texture2D(tex, pt);\n"
      "#endif\n"
      " color = vec4(color.xyz*color.w,color.w);\n"
      " result = innerCol * color;\n"
      "#ifdef NVGP_GL3\n"
      " outColor = result;\n"
      "#else\n"
      " gl_FragColor = result;\n"
      "#endif\n"
      "}\n";

